package org.opens.mybatisplus.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.opens.mybatisplus.pojo.JpaUserDo;

import java.util.List;

public interface JpaUserService {

    /**
     * 功能:
     *      观察@Transactional(rollbackFor = RuntimeException.class)注解配置的事务回退机制.
     * 注意:
     *      1. 在内部使用int a = 1 / 0;这句代码来产生RuntimeException.
     */
    public boolean removeById(int id);

    /**
     * 功能:
     *      使用QueryWrapper来制造出嵌套型where条件, 例如: a > 1 or (b > 2 and c < 3).
     */
    public List<JpaUserDo> listByIdAndNameOrOld(int id, String name, int old);

    /**
     * 功能:
     *      将com.baomidou.mybatisplus.extension.plugins.pagination.Page对象传入dao层进行快速分页.
     */
    public IPage<JpaUserDo> selectByPage(int pageNumber, int pageSize, int id, String name, int old);

    public IPage useQueryWrapperSelectPage(int pageNumber, int pageSize, int[] ids, String name, int old);

    /**
     * 功能:
     *      使用mybaits plus实现lambda样式的查询.
     * 说明:
     *      1. 这样做的好处是如果修改了字段名称和对应的getter/setter方法, 就会使这个方法报错, 提示开发者, 提高了程序的可维护性.
     */
    public IPage<JpaUserDo> selectByNameFromLambda(int pageNumber, int pageSize, String name);

}
